package itsm.isperp.framework.service;

import itsm.isperp.framework.domain.Datalog;
import itsm.isperp.framework.web.response.ResultMessage;

import java.util.List;

/**
 * 数据日志服务类，所谓数据日志是指开发过程中，对于一些敏感数据，用户一旦进行修改，<br>
 * 那么就需要将修改前及修改后的数据记录下来，这里采用记录到数据库表中的方式，将修改前的包含业务数据的POJO对象序列化到数据库，<br>
 * 包含修改后数据的对象同样也序列化到数据库当中，同时记录当前数据的唯一ID，以备后续数据审计使用
 */
public interface IDatalogService<T extends Datalog> {

	/**
	 * 向数据日志表中插入一个新的数据日志审计信息
	 * 
	 * @param oldData
	 *            包含修改之前业务数据的Java对象
	 * @param newData
	 *            包含修改后业务数据的Java对象
	 * @param businessId
	 *            当前业务数据的ID主键值
	 * @param desc
	 *            描述
	 * @return 返回SQL
	 * @throws Exception
	 */
	int save(T log);

	/**
	 * 删除所有给定业务数据的日志信息
	 * 
	 * @param businessId
	 *            业务数据的id
	 * @throws Exception
	 */
	void deleteByBusinessId(String businessId);

	/**
	 * 删除指定ID的日志信息
	 * 
	 * @param id
	 *            要删除的日志ID
	 * @throws Exception
	 */
	ResultMessage delete(String id);

	/**
	 * 查询指定业务数据下所有的日志信息
	 * 
	 * @param businessId
	 *            指定的业务数据的ID
	 * @return 返回Datalog集合
	 * @throws Exception
	 */
	List<T> findByBusinessId(String businessId);

	/**
	 * 查询指定ID的日志信息
	 * 
	 * @param id
	 *            要查询的日志信息的ID
	 * @return 返回Datalog对象
	 * @throws Exception
	 */
	T findOne(String id);
}
